// 封装请求
import {
    config
} from './config.js'

const tips = {
    1001: '抱歉，出现了一个错误',
    1002: 'url路径错误',
    // ...
}

class HTTP {
    // 必填参数在默认值参数前面
    // 对象解构
    request({
        url,
        data = {},
        method = 'GET'
    }) {
        return new Promise((resolve, reject) => {
            this._request(url, resolve, reject, data, method)
        })
    }

    _request(url, resolve, reject, data = {}, method = 'GET') {
        wx.showNavigationBarLoading()
        wx.request({
            url: config.api_base_url + url,
            data: data,
            method: method, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
            header: {
                'content-type': 'application/json',
                'appkey': config.appkey
            }, // 设置请求的 header
            success: res => {
                // startsWith  endsWith
                const code = res.statusCode.toString()
                // 2开头的状态码表示成功
                if (code.startsWith('2')) {
                    resolve(res.data)
                } else {
                    reject()
                    let error_code = res.data.error_code
                    this._show_error(error_code)
                }
            },
            fail: err => {
                reject()
                this._show_error(1)
            },
            complete: function () {
                // complete
                wx.hideNavigationBarLoading()
            }
        })
    }

    _show_error(error_code = 1) {
        const tip = tips[error_code]
        wx.showToast({
            title: tip ? tip : tips[1],
            icon: 'none',
            duration: 2000
        })
    }
}



export {
    HTTP
}